<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
namespace Agp\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Agp\CoreBundle\Entity\VendaAgape;

/**
 * Agp\CoreBundle\Entity\Item
 *
 * @ORM\Table(name="item_venda_agape")
 * @ORM\Entity(repositoryClass="Agp\CoreBundle\Repository\ItemVendaAgapeRepository")
 * @ORM\HasLifecycleCallbacks
 */
class ItemVendaAgape {
    
    /**
     * @var integer $codItemCompra
     *
     * @ORM\Column(name="cod_item_venda_agape", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $codItemVenda;
   
    /**
     * @ORM\ManyToOne(targetEntity="VendaAgape", fetch="LAZY", inversedBy="itens")
     * @ORM\JoinColumn(name="cod_venda_agape", referencedColumnName="cod_venda_agape", onDelete="cascade")
     */
    protected $venda;
    
    /**
     * @ORM\ManyToOne(targetEntity="Agp\CoreBundle\Entity\ProdutoAgape", cascade={"persist", "merge"}, fetch="LAZY")
     * @ORM\JoinColumn(name="cod_produto_agape", referencedColumnName="cod_produto_agape", onDelete="restrict")
     * @Assert\NotBlank
     */
    protected $produto;
    
    /**
     * @ORM\Column(name="vlr_item", type="float", nullable=false)
     * @Assert\NotBlank
     */
    protected $vlrItem;
    
    /**
     * @ORM\Column(name="qtd_item", type="integer", nullable=false)
     * @Assert\NotBlank
     */
    protected $qtdItem;
    
    /**
     * @Assert\True(message="Estoque insuficiente.")
     */
    public function isTemEstoque(){
        if ($this->getProduto()){
            return ($this->qtdItem <= $this->getProduto()->getQtdeAtual());
        }else{
            return true;
        }
    }
    
    public function voltaEstoque(){
        if ($this->venda->isAtivo())
            $this->produto->atualizaQtde($this->qtdItem);
    }
    
    public function retiraEstoque(){
        return $this->produto->retirarQtde($this->qtdItem);
    }
    
    public function getCodItemVenda() {
        return $this->codItemVenda;
    }

    public function setCodItemVenda($codItemVenda) {
        $this->codItemVenda = $codItemVenda;
    }

    public function getValorTotalItem(){
        return $this->getQtdItem()*$this->getVlrItem();
    }
    
    public function getVenda() {
        return $this->venda;
    }

    public function setVenda($venda) {
        $this->venda = $venda;
    }

    public function getProduto() {
        return $this->produto;
    }

    public function setProduto($produto) {
        $this->produto = $produto;
    }

    public function getVlrItem() {
        return $this->vlrItem;
    }

    public function setVlrItem($vlrItem) {
        if (is_string($vlrItem)){
            $this->vlrItem = substr(str_replace(",", ".", $vlrItem),3);
        }else{
            $this->vlrItem = $vlrItem;
        }
    }
    
    public function setVlrItemByPass($vlrItem){
        $this->vlrItem = $vlrItem;
    }

    public function getQtdItem() {
        return $this->qtdItem;
    }

    public function setQtdItem($qtdItem) {
        $this->qtdItem = $qtdItem;
    }

}

?>
